Transmitting three-dimensional, or even in some cases two-dimensional graphics, can be a resource intensive process. In some instances, the image may include complex textures, shading or other attributes thereby causing the image to be relatively large and therefore require a large amount of resources to transfer the image from one computer to another. These systems often do not have the resources required to accommodate low bandwidth requirements and time constraints that may be placed on the transfer process of an image from one machine to another.
Many methods and techniques exist to compress and encode graphics to alleviate the strain graphics processing places on systems and networks. One such method is progressive image encoding which encodes portions of an image, transmits those encoded portions to a remote machine, and decodes each image portion as it is received. A downside to progressive image encoding is that it can place a significant strain on the CPU because each intermediary encode/decode step requires a great deal of resources. The high CPU cost is due to the fact that the entire image must be entirely decoded at each intermediary step. Thus, each step in the decoding process fails to take advantage of the decoding performed by earlier steps in the decoding process. Were a user to have a slow network connection, then progressive encoding would be useful because it would allow the user to see the image encode over a period of time.
There are a number of different encoding standards that support progressive encoding, such as JPEG and JPEG XR. Like progressive encoding, there are drawbacks to both of these encoding standards. While JPEG XR offers high quality compression, a great deal of time is required to encode and decode using this technique, and the technique requires a high powered CPU both on the local computing machine and the remote computing machine. While the quality of JPEG XR compression is much higher than traditional JPEG, in situations where speed and scalability are required, traditional JPEG may be a better choice.
Remote desktop and application delivery can in many instances require fast delivery of images in many different environments. Thus, a progressive-image-encoding-like solution is needed that takes advantage of encoding techniques more suited to the needs of a remote desktop and application delivery system. Current systems have approximated such a system by encoding images once using JPEG at low quality setting, and then encoding the same image again at high quality setting. The first image is sent to a remote client, and after a period of delay, the second image is sent to the client. The drawback of this technique is that the display of a fuzzy image followed by a clear image may not be pleasing to the eye.
Thus, methods and systems are needed that can approximate progressive image encoding using a reliable method that can generate images that are pleasing to the eye. Further, it would be advantageous for these systems to utilize an encoding technique suited to the needs of a remote desktop and application delivery system.